public class MarktUI { private Markt markt; public MarktUI( Markt markt ) { this.markt = markt; } public void mainUI() { int choice = -1; while (choice < 0) { System.out.print( "1. Verkauf durchführen\n" + "2. Lager anzeigen\n" + "3. Kassenwert anzeigen\n" + "0. Programm verlassen\n" ); choice = readInt("Auswahl: "); switch (choice) { case 1: verkauf( markt.kasse ); break; case 2: anzeigeLager( markt.lager ); break; case 3: anzeigeKasse( markt.kasse ); break; case 0: return; //break; } choice = -1; } } private static void anzeigeLager( Warenlager lager ) { System.out.print( lager + "\n" ); } private static void anzeigeKasse( Kasse kasse ) { System.out.print( kasse + "\n\n"); } private static void verkauf( Kasse kasse ) { // kasse.verkauf(); int choice = 0, count = 0; while (true) { // Warenliste, nummeriert System.out.print( listLager( kasse.getLager() ) + "0. Verkauf abschließen\n" ); // Einlesen von der benutzerwahl choice = readInt("Ware: "); if ( choice < 0 ) { System.out.print("Ungültige Auswahl\n"); } else if ( choice > kasse.getLager().bestand.length() ) { System.out.print("Ungültige Auswahl\n"); } else if ( choice == 0 ) { // Abrechnung System.out.println(kasse.getVerkauf()); kasse.beendeVerkauf(); return; } else { // Verkauf verkaufWare( kasse, kasse.getLager().get( choice - 1 ).ware ); } } } private static void verkaufWare( Kasse kasse, Ware ware ) { int count = 0; while (true) { count = readInt("Anzahl: "); if ( kasse.getLager().anzahl(ware) >= count ) { kasse.verkauf(ware, count); System.out.println(kasse.getVerkauf()); return; } else { System.out.print("Ware nicht in der gewünschten Anzahl vorhanden\n"); } } } private static String listLager( Warenlager lager ) { Liste b; String r = ""; int n = 1; for ( b = lager.bestand; b != null; b = b.next) { r = r + n + ". " + ((Warenbestand)b.data).ware.toString() + "\n"; n++; } return r; } private static String readString() { return System.console().readLine(); } private static String readString( String prompt ) { System.out.print(prompt); return System.console().readLine(); } private static int readInt() { while (true) { try { return Integer.parseInt( System.console().readLine() ); } catch (NumberFormatException e) { } } } private static int readInt(String prompt) { while (true) { try { System.out.print(prompt); return Integer.parseInt( System.console().readLine() ); } catch (NumberFormatException e) { } } } public static boolean test() { System.err.print("MarktUI: "); System.out.print("\nGib ein: foobar - : "); assert( readString().equals("foobar") ); assert( readString("Drücke [Enter]: ").equals("") ); System.out.print("\nGib ein: 23 - : "); assert( readInt() == 23 ); assert( readInt("Gib ein: 42 - : " ) == 42); System.err.println("passed"); return true; } public static void main(String[] args) { assert( test() ); } }